package com.szeldon.pj.jps.datastore;

import java.util.LinkedList;
import java.util.List;

public class ComplexObject extends SBAObject {

    private List<SBAObjectId> sbaObjectIds = new LinkedList<SBAObjectId>();

    public ComplexObject(SBAObjectId sbaObjectId, String name) {
        super(sbaObjectId, name);
    }

    public void addSbaObjectId(SBAObjectId sbaObjectId) {
        if (!sbaObjectIds.contains(sbaObjectId)) {
            sbaObjectIds.add(sbaObjectId);
        }
    }

    public SBAObjectId removeSbaObjectId(SBAObjectId sbaObjectId) {
        int indexOf = sbaObjectIds.indexOf(sbaObjectId);
        if (indexOf == -1) {
            return null;
        } else {
            return sbaObjectIds.remove(indexOf);
        }
    }

    public int getSubobjectsCount() {
        return sbaObjectIds.size();
    }

    public List<SBAObjectId> getSubobjectsList() {
        return sbaObjectIds;
    }

    @Override
    public String toString() {
        StringBuffer valueBuffer = new StringBuffer("{");
        for (int i = 0; i < sbaObjectIds.size(); i++) {
            valueBuffer.append(sbaObjectIds.get(i));
            if (i != sbaObjectIds.size() - 1) {
                valueBuffer.append(", ");
            }
        }
        valueBuffer.append("}");
        return "<" + getSbaObjectId() + ", \"" + getName() + "\", " + valueBuffer + ">";
    }
}
